<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Resize フィルタ</title>
<link rel="stylesheet" type="text/css" href="../../avisynth.css">
<link rel="stylesheet" type="text/css" href="../ja.css">
</head>
<body>
<h2>BicubicResize / BilinearResize / BlackmanResize / GaussResize / LanczosResize /
Lanczos4Resize / PointResize / Spline16Resize / Spline36Resize / Spline64Resize</h2>
<p><code>BicubicResize </code>(<var>clip, int target_width, int target_height, float
  &quot;b=1./3.&quot;, float &quot;c=1./3.&quot;, float &quot;src_left&quot;, float &quot;src_top&quot;,
  float &quot;src_width&quot;, float &quot;src_height&quot;</var>)<br>
  <code>BilinearResize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;,
  float &quot;src_height&quot;</var>)<br>
  <code>BlackmanResize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;, int &quot;taps=4&quot;</var>)<br>
  <code>GaussResize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;, float &quot;p=30.&quot;</var>)<br>
  <code>LanczosResize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;, int &quot;taps=3&quot;</var>)<br>
  <code>Lanczos4Resize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;</var>)<br>
   <code>PointResize </code>(<var>clip, int target_width, int target_height, float &quot;src_left&quot;,
  float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;</var>)<br>
  <code>Spline16Resize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;</var>)<br>
  <code>Spline36Resize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;</var>)<br>
  <code>Spline64Resize </code>(<var>clip, int target_width, int target_height, float
  &quot;src_left&quot;, float &quot;src_top&quot;, float &quot;src_width&quot;, float &quot;src_height&quot;</var>)
</p>
<p><em>v2.56</em> から、すべてのリサイザに対して（<a href="crop.htm">Crop</a> と同様に）オフセット<a href="#footnote_1" class="footnote_link">*1</a>を使用することができます:<br>
すなわち、<br>
<code>GaussResize </code>(<var>clip, int target_width, int target_height, float
  "src_left", float "src_top", float -&quot;src_right&quot;, float
-&quot;src_top&quot;</var>)</p>
<p>すべてのリサイザに関して、リサイズ前にクロップを行う拡張シンタックスを使用することができます。リサイズの前に Crop フィルタを置くのと同じ演算が実行されますが、両者にはわずかにスピードの違いがあります。</p>

<p>エッジの意味がわずかに異なります。Crop はクッキリとした完全な境界線を生じますが、リサイザフィルタのローブ<a href="#footnote_2" class="footnote_link">*2</a>は画像の物理的なエッジを超えない範囲でクロップされた領域にまで及ぶかもしれません。</p>

<p>クッキリとした縁や VHS のヘッドのスイッチングノイズを取り除くには、<a href="crop.htm">Crop</a> を使用してください。リサイザのクロップを使用すると、ノイズを近傍の出力ピクセルにまで増殖させるおそれがあります。完全な画像の一部分を削る際に正確なエッジのレンダリングを維持するには、リサイザのクロップを使用してください。</p>

<pre>Crop(10,10,200,300).BilinearResize(100,150)

# 上記のスクリプトは、以下とほぼ同じ
BilinearResize(100,150,10,10,200,300)</pre>

<p>重要: AviSynth は、完全に独立した垂直と水平のリサイザを備えています。もし 1 つの軸に関して入力が出力と同じなら、リサイザはスキップされます。どちらが最初に呼び出されるかは、どちらが最も小さい縮小率かによって決定されます。これは、最大限の品質を保持するために行われます。これにより、2 番目のリサイザは、処理すべき最高のピクチャを得ます。</p>

<h3>BilinearResize</h3>

<p><code>BilinearResize</code> フィルタは、入力ビデオフレームを任意の新しい解像度にリスケール（再拡大/再縮小）します。オプションの <var>source</var> 引数<a href="#footnote_3" class="footnote_link">*3</a>を与えると、<code>BilinearResize</code> の前にそれらの引数を使ってクリップに <code><a href="crop.htm">Crop</a></code> を適用した場合と同じ結果になります。</p>
<p><code>BilinearResize</code> は、標準的なバイリニアフィルタリング<a href="#footnote_4" class="footnote_link">*4</a>を使用しており、VirtualDub の「precise bilinear」リサイズオプションとほぼ同じです。「ほぼ」というのは、単に VirtualDub のフィルタが若干スケーリング係数を間違っているようであり、その結果、画像の上と右のピクセルがクリッピングされるかもしくは複製されるからです（このエラーは 1 つないし 2 つ以上の係数によってフレームサイズを拡大するときに顕著ですが、さもなければ大したことはないため、これについて過度に心配することはないと思います）。</p>

<pre>使用例:
# ビデオファイルを読み込み、（元のサイズに関係なく） 240x180 にリサイズ
AVISource(&quot;video.avi&quot;).BilinearResize(240,180)

# 720x480 （ITU-R BT.601）のビデオを読み込み、正しいアスペクト比を保持したまま、
# 352x240（ビデオ CD）にリサイズ
AVISource(&quot;dv.avi&quot;).BilinearResize(352, 240, 8, 0, 704, 480)

# 上に同じ
AviSource(&quot;dv.avi&quot;).BilinearResize(352, 240, 8, 0, -8, -0)

# 320x240 のビデオの右上の 1/4 を抽出し、それをズームして
# フレーム全体を埋める
BilinearResize(320,240,160,0,160,120)
</pre>

<h3>BicubicResize</h3>

<p>線形フィルタリングの代わりに Mitchell-Netravali の 2 つのパラメータを取るキュービック・フィルタ<a href="#footnote_5" class="footnote_link">*5</a>を使用するということを除けば、<tt><code>BicubicResize</code></tt><a href="#footnote_6" class="footnote_link">*6</a> は <tt><code>BilinearResize</code></tt> に似ています。パラメータ <i>b</i> と <i>c</i>  は、3 次式のプロパティを調整するために使用することができます。それぞれ、「ぼかし」と「リンギング」<a href="#footnote_7" class="footnote_link">*7</a>と呼ばれることがあります。</p>
<p><i>b</i> = 0 かつ <i>c</i> = 0.75 の場合、このフィルタは VirtualDub の「precise bicubic」とまったく同じで、上述の VirtualDub のスケーリング問題を除けば結果もまったく同じです。デフォルト値は <i>b</i> = 1./3. と <i>c</i> = 1./3. です。これは、人間の主観テストにおいて最も視覚的に満足の行く結果をもたらすものとして Mitchell と Netravali により推奨された値です。<i>b</i> と <i>c</i> をもっと大きな値にすると、興味深いオプアート<a href="#footnote_8" class="footnote_link">*8</a>効果を引き起こすことができます -- たとえば <i>b</i> = 0、<i>c</i> = -5 を試してみてください。</p>
<p>もしビデオを拡大するのなら、<tt><code>BilinearResize</code></tt> よりも <tt><code>BicubicResize</code></tt> の方がはるかに良い結果が得られます。しかし、もし縮小するのなら、<tt><code>BilinearResize</code></tt> でもおそらく同程度かむしろ良いくらいでしょう。VirtualDub のバイキュービックフィルタはバイリニアフィルタよりもきれいな画像をつくり出しますが、これはおもにバイキュービックフィルタが画像をシャープにするからであり、サンプリングにおいて優れているからではありません。シャープな画像は見た目はすばらしいですが、それは圧縮を試みるまでのことであり、圧縮した瞬間、それらの画像は急激に扱いにくいものになります。<tt><code>BicubicResize</code></tt> の初期設定は、VirtualDub のバイキュービックほどシャープにはしませんが、バイリニアよりはシャープにします。もし低いビットレートでビデオをエンコードするつもりなら、<tt><code>BilinearResize</code></tt> のほうが全体的に優れた最終結果をもたらしたとしてもまったく驚きません。</p>
<p>数値的にもっとも正確なフィルタのためには、b と c が以下の式を満たすように制限してください :-
<pre>  b + 2 * c = 1</pre>
これにより、b = 0 のとき、c の最大値 0.5 が与えられます。これは Catmull-Rom スプライン<a href="#footnote_9" class="footnote_link">*9</a> と呼ばれるもので、シャープさを得るにはおすすめです。</p>
<p>c が 0.6 より大きくなると、「リンギング」が出始めます。リアルなシャープさではなく、テレビのシャープネスコントロールのようにくっきりしたものが得られるようになります。b に関しては、負の値は許可されていません。c が 0.5 より大きい場合、b = 0 を使用してください。</p>

<h3>BlackmanResize</h3>

<p><code>BlackmanResize</code> は、タップ数が大きい場合のリンギングノイズをよりうまくコントロールする <code>LanczosResize</code> の改造版です。taps 引数に関する説明は <code>LanczosResize</code> を参照してください（デフォルト: taps=4）。（<em>v2.58</em> で追加）</p>

<h3>GaussResize</h3>

<p>GaussResize は、調節可能なシャープ用のパラメータ <var>p</var> （デフォルト 30）を持つガウシアンリサイズフィルタを使用します。<var>p</var> の取る範囲はおよそ 1 から 100 までで、1 は非常にぼやけ、100 はとてもシャープになります。<code>GaussResize</code> は 4 タップを使用し、<code>Lanczos4Resize</code> に似た処理速度です（<em>v2.56</em> で追加）。</p>

<h3>LanczosResize / Lanczos4Resize</h3>

<p><code>LanczosResize</code></tt><a href="#footnote_10" class="footnote_link">*10</a> は、かなり強いシャープを生み出す c = 0.6 ～ 0.75 という高い値を指定した場合の <tt><code>BicubicResize</code></tt> の代替となるフィルタです。通常、優れた品質（少ない人工ノイズ）とシャープな画像を提供します。</p>
<p><code>Lanczos4Resize</code> （<em>v2.55</em> から追加）は、<code>LanczosResize</code> （正式名称: Lanczos3Resize）と密接に関連しています。リサイズを行うために、後者が 2*3=6 ローブを使用するのに対し、前者は 2*4=8 ローブを使用します。結果として、<code>Lanczos4Resize</code> の方がよりシャープな画像を生成します。とりわけクリップを拡大するときに役立ちます。</p>
<p>Lanczos4Resize は、LanczosResize(taps=4) の簡略表記です。</p>
<p><b>注: taps という名前の入力引数は、本当は lobes であるべきです（実際、ローブの半分です）。リサイザについて議論するとき、taps は以下で説明されているように異なる意味を持ちます。</b></p>

<h4>補間タップ<a href="#footnote_11" class="footnote_link">*11</a>数（taps パラメータ）</h4>

<p>taps=4 と仮定すると、アップサンプリング<a href="#footnote_12" class="footnote_link">*12</a>に関しては、すべての平均化が 4 つの入力サンプルにわたって起こるようにフィルタ範囲が大きさで分けられ、これを 4 タップフィルタにします。出力画像がどれだけ大きなものになるのかは問題ではありません - 依然として 4 タップのままです。</p>
<p>ダウンサンプリング（画像の縮小）については、4 つの *目的* サンプル（当然、ソースサンプルよりも広く間隔をあけられる）にわたって起こるように大きさによって分けられます。そのため、2 の倍数でのダウンサンプリング（画像を半分の大きさにする）の場合、このフィルタは 2*4=8 の入力サンプルを対象とします。すなわち、事実上の 8 タップです。さらに 3 倍のダウンサンプリングなら、事実上、3*4=12 タップとなる、といった具合になります。</p>
<p>したがって、ダウンサンプリングに関するタップの有効数は、ダウンサンプリング率 × フィルタ入力タップ数です（要するに、<b>T</b> 倍のダウンサンプリングと Lanczos<b>k</b>Resize は T*k タップになります）。これは、次の偶数まで切り上げられます。アップサンプリングについては、つねに <b>k</b> タップです。ソース: [<a href="http://www.avsforum.com/avs-vb/showthread.php?s=&amp;postid=4760581#post4760581">avsforum の投稿</a>]。</p>

<h3>PointResize</h3>

<p><tt><code>PointResize</code></tt> は、最もシンプルなリサイズフィルタです。一般に非常にブロックの目立つ画像をもたらすポイントサンプリング（Point Sampler）またはニアレストネイバー（Nearest Neighbour）<a href="#footnote_13" class="footnote_link">*13</a>のアルゴリズムを使用します。そのため、一般的にこのフィルタは、意図的に低品質を狙う場合か、クリアなピクセル描画を必要とする場合にのみ使用すべきです。<br>
詳しく調べるためにピクセルの小さな領域を拡大するのに非常に役立ちます。</p>

<h3>Spline16Resize/Spline36Resize/Spline64Resize</h3>

<p>3 つのスプライン<a href="#footnote_14" class="footnote_link">*14</a>ベースのリサイズフィルタ（<em>v2.56/v2.58</em> で追加）。Spline の論理的根拠は、<code>LanczosResize</code> よりも少ないリンギングノイズで、可能な限りシャープであることです。<code>Spline16Resize</code> は sqrt<a href="#footnote_15" class="footnote_link">*15</a>(16)=4 つの標本点を使用し、<code>Spline36Resize</code> は 6 つ、<code>Spline64Resize</code> は 8 つの標本点を使用します。標本点が多く使用されるほど、クリップはシャープになります。リサイザ間の比較は、<a href="http://web.archive.org/web/20060827184031/http://www.path.unimelb.edu.au/~dersch/interpolator/interpolator.html" class="external text"
title="http://web.archive.org/web/20060827184031/http://www.path.unimelb.edu.au/~dersch/interpolator/interpolator.html" rel="nofollow">こちら</a>にあります。</p>

<p>今日現在、AviSynth の作者は、Spline リサイザで使用されているような係数がどのようにして導き出されるのかわかりません。もし知っている方がいれば、ご連絡ください。</p>

<p><b>更新履歴:</b></p>
<table border="1">
  <tbody>
    <tr>
      <td>v2.55</td>
      <td>Lanczos4Resize を追加</td>
    </tr>
    <tr>
      <td>v2.56</td>
	  <td>Spline16Resize、Spline36Resize、GaussResize を追加。LanczosResize に taps パラメータを追加。xxxResize の Crop 部分にオフセットを追加</td>
    </tr>
    <tr>
      <td>v2.58</td>
      <td>BlackmanResize、Spline64Resize を追加</td>
    </tr>
  </tbody>
</table>
<p><kbd>原文 Date: 2007/04/17 03:29:29</kbd><br />
<kbd>日本語訳 $Date: 2008/06/28 00:58:31 $</kbd></p>
<FORM>
  <INPUT TYPE="Button" VALUE="戻る"
onClick="history.go(-1)">
</form>

<hr />
<div id="footnote">
<ul>
  <li>訳者註:
    <ul>
      <li><a name="footnote_1" class="footnote_link">*1</a> <span class="footnote_text">src_width と src_height の部分に負の値を使用することによって、それぞれ右端（src_right）と下端（src_bottom）のクロップ幅を指定することができるようになります。</span></li>
      <li><a name="footnote_2" class="footnote_link">*2</a> <span class="footnote_text">参考: <a href="http://avisynth.org/mediawiki/Lanczos_lobs/taps">Lanczos lobs/taps - Avisynth</a>、<a href="http://ja.wikipedia.org/wiki/%E7%AA%93%E9%96%A2%E6%95%B0">窓関数 - Wikipedia</a></span></li>
      <li><a name="footnote_3" class="footnote_link">*3</a> <span class="footnote_text">「src_」始まるパラメータ（src_left、src_top、src_width、src_height）のこと。また、その値。</span></li>
      <li><a name="footnote_4" class="footnote_link">*4</a> <span class="footnote_text">バイリニア補間（双線形補間）を用いた画像フィルタリング手法。参考: <a href="http://yougo.ascii24.com/gh/81/008181.html">ASCII24 - アスキー デジタル用語辞典 - バイリニアフィルタリング</a>、<a href="http://homepage1.nifty.com/open-prog/java/tip009.html">ＪＡＶＡで学ぶ３Ｄ</a>、<a href="http://www.asahi-net.or.jp/~UC3K-YMD/Sketch/Scale/scale01.html">内分点と画像の拡大・縮小</a></span></li>
      <li><a name="footnote_5" class="footnote_link">*5</a> <span class="footnote_text">原文は「Mitchell-Netravali two-part cubic」。同じフィルタを指すために「Mitchell &amp; Netravali's two-param cubic filter」という表現も使われているようです。このため、訳文のように翻訳することにしました。参考: <a href="http://portal.acm.org/citation.cfm?id=378514">Reconstruction filters in computer-graphics</a></span></li>
      <li><a name="footnote_6" class="footnote_link">*6</a> <span class="footnote_text">参考: <a href="http://www.marumo.ne.jp/db2000_c.htm#18">Diary 2000-12（まるも製作所）</a>、<a href="http://junki.lix.jp/delphigr/042Resize2.htm">MemoNyanDum : Resize 2. Bilinear vs Bicubic</a></span></li>
      <li><a name="footnote_7" class="footnote_link">*7</a> <span class="footnote_text">参考: <a href="http://www.system5.jp/asp/contents.asp/fnm/dictionary/ri_019">リンギング / プロフェッショナルビデオ用語辞典 / システムファイブ e-PROSHOP</a>、<a href="http://yougo.ascii24.com/gh/26/002698.html">ASCII24 - アスキー デジタル用語辞典 - リンギング</a></span></li>
      <li><a name="footnote_8" class="footnote_link">*8</a> <span class="footnote_text">参考: <a href="http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%97%E3%82%A2%E3%83%BC%E3%83%88">オプ・アート - Wikipedia</a></span></li>
      <li><a name="footnote_9" class="footnote_link">*9</a> <span class="footnote_text">参考: <a href="http://markun.cs.shinshu-u.ac.jp/learn/cg/cg3/index5.html">第３章　第５節　Catmull-Romスプライン曲線</a></span></li>
      <li><a name="footnote_10" class="footnote_link">*10</a> <span class="footnote_text">参考: <a href="http://www.marumo.ne.jp/db2001_7.htm#7">Diary 2001-7（まるも製作所）</a>、<a href="http://www.marumo.ne.jp/db2001_6.htm#27">Diary 2001-6（まるも製作所）</a>、<a href="http://agehatype0.blog50.fc2.com/blog-entry-47.html">Lanczos 3, Lanczos 4とはなんぞや - 2008/04/302006/09/11 ageha was here</a></span></li>
      <li><a name="footnote_11" class="footnote_link">*11</a> <span class="footnote_text">参考: <a href="http://avisynth.org/mediawiki/Lanczos_lobs/taps">Lanczos lobs/taps - Avisynth</a>、<a href="http://www.marumo.ne.jp/db2001_7.htm#6">Diary 2001-7（まるも製作所）</a>、<a href="http://agehatype0.blog50.fc2.com/blog-entry-47.html">Lanczos 3, Lanczos 4とはなんぞや - 2008/04/302006/09/11 ageha was here</a></span></li>
      <li><a name="footnote_12" class="footnote_link">*12</a> <span class="footnote_text">参考: <a href="http://blackfin.s36.coreserver.jp/2191/program/polyphase/polyphase02.shtml">アップ･サンプリング</a></span></li>
      <li><a name="footnote_13" class="footnote_link">*13</a> <span class="footnote_text">最近傍法、最近傍画素法とも言う。参考: <a href="http://www.geocities.jp/numada777/ip05.html">画像補間法</a>、<a href="http://www.microsoft.com/japan/msdn/academic/Articles/Algorithm/04/">アルゴリズム入門 : 第 4 章 画像処理入門 2</a>、<a href="http://www.dear-jpn.com/main/2007/09/image_reduction.html">画像縮小について (株式会社ディア Dear inc.)</a></span></li>
      <li><a name="footnote_14" class="footnote_link">*14</a> <span class="footnote_text">参考: <a href="http://eagle.cs.miyazaki-u.ac.jp/~yokomich/education/ensyu3-2006/Jn26/Jn26/Jn26.html">情報工学演習II 第12回: スプライン補間（宮崎大学）</a></span></li>
      <li><a name="footnote_14" class="footnote_link">*14</a> <span class="footnote_text"> sqrt() は平方根を求める式（関数）です。よって、sqrt(16) は、16 の平方根のうち、正の数の 4 となります。</span></li>
    </ul>
  </li>
</ul>
</div>

</body>
</html>
